package com.yanggu.scala.chapater06.oop

object ConstructorDemo02 {

  def main(args: Array[String]): Unit = {
    //1. scala类的主构造方法的形参如果没有任何修饰符, 表示这是局部变量。可以理解为主构造方法就是普通方法, 没有任何修饰符就是局部变量
    //2. 如果用var进行修饰, scala将会把变量作为类的成员变量。同时提供name() name_$eq的方法
    //3. 如果用val进行修饰, scala将会把变量作为类的成员变量。只提供name()方法, 表示只读, 不能进行修改
    val person = new Person3("张三", 20, "男")
    person.name = "王五"
//    person.age = 40
    println(person)
  }

}

//另外scala主构造方法中的参数默认的作用于是整个类, 外界不能访问, 并且是只读变量, 不能修改值
class Person3(var name: String, age: Int, gender: String) {

  //这种写法直接报错, Reassignment to val
//  age = 20

  override def toString = s"Person($name, $age)"
}
